﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using BeetleX.Http.Clients;
using DEEBCG.ExternalLib.CompanyAPI.Model;

namespace DEEBCG.ExternalLib.CompanyAPI
{
    /// <summary>
    /// 获取Report接口类
    /// </summary>
    [Controller(BaseUrl = "/api/Report/")]
    public interface IReport
    {
        /// <summary>
        /// 获取日报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="reportDate">报告日期</param>
        /// <returns></returns>
        [Get]
        Task<ResultInfo<DayReportInfo>> GetDayReport(string userID, DateTime reportDate, [Header("DEEBCG")] string token);

        /// <summary>
        /// 获取基础日报表数据
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过1年</remarks>
        [Get]
        Task<ResultInfo<List<BasicSignsDayReportInfo>>> GetDayReportList(string userID, DateTime start, DateTime end, [Header("DEEBCG")]string token);

        /// <summary>
        /// 24小时心跳频率数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<HeartRateReportInfo>>> GetHeartRateList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 24小时HRV数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<HRVInfo>>> GetHRVList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 24小时血压趋势数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<BPTrendReportInfo>>> GetBPTrendList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 24小时呼吸频率数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<BreatheRateReportInfo>>> GetBreatheRateList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 24小时呼吸阻塞数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<BreatheApneaReportInfo>>> GetBreatheApneaList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 24小时打鼾数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<SnoreReportInfo>>> GetSnoreList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 24小时在床数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<OnBedStatusReportInfo>>> GetOnBedStatusList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);

        /// <summary>
        /// 24小时室温数据报表
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <returns></returns>
        /// <remarks>数据时长不超过48小时</remarks>
        [Get]
        Task<ResultInfo<List<TemperatureReportInfo>>> GetTemperatureList(string userID, DateTime start, DateTime end, [Header("DEEBCG")] string token);


        /// <summary>
        /// 睡眠曲线
        /// </summary>
        /// <param name="reportID"></param>
        /// <returns></returns>
        [Get]
        Task<ResultInfo<SleepCurveInfo>> GetSleepCurve(int reportID, [Header("DEEBCG")] string token);
    }
}
